package com.ruoyi.utils;
import org.bouncycastle.util.encoders.BufferedEncoder;

import java.awt.*;
import java.awt.image.BufferedImage;

public class ImageUtil {
    // 将图片的时间信息和添加到图片的左上角
    public static BufferedImage addTimestamp(String timestamp,BufferedImage image) {
        Graphics2D g2d = (Graphics2D) image.getGraphics();
        // 计算字体大小
        int fontSize = image.getWidth() / 40; // 根据图片宽度计算字体大小，这里使用图片宽度的 1/10
        g2d.setColor(Color.WHITE); // 设置文字颜色为白色
        g2d.setFont(new Font("Arial", Font.PLAIN, fontSize)); // 设置字体样式和大小
        // 计算时间信息在图片中的位置
        int x = 10;
        int y = fontSize;
        g2d.drawString(timestamp, x, y); // 在指定位置绘制时间信息
        g2d.dispose(); // 释放资源
        return image;
    }

    /**
     * 在图片上添加设备的manualId
     * @param manualId
     * @param image
     * @return
     */
    public static BufferedImage addDeviceId(String manualId, BufferedImage image){
        Graphics2D g2d = (Graphics2D) image.getGraphics();
        // 计算字体大小
        int fontSize = image.getWidth() / 40; // 根据图片宽度计算字体大小，这里使用图片宽度的 1/10
        g2d.setColor(Color.WHITE); // 设置文字颜色为白色

        g2d.setFont(new Font("Arial", Font.PLAIN, fontSize)); // 设置字体样式和大小

        // 计算时间信息在图片中的位置
        int x = 0;
        int y = (image.getHeight() - (manualId.length() * fontSize)) / 2;
        // 绘制竖排文字
        for (int i = 0; i < manualId.length(); i++) {
            char character = manualId.charAt(i);
            String characterAsString = Character.toString(character);
            g2d.drawString(characterAsString, x, y);
            y += fontSize;
        }
        g2d.dispose(); // 释放资源
        return image;
    }

    /**
     * 添加照片拍照模式
     * @param photoType
     * @param image
     * @return
     */
    public static BufferedImage addPhotoType(String photoType,BufferedImage image) {
        Graphics2D g2d = (Graphics2D) image.getGraphics();
        // 计算字体大小
        int fontSize = image.getWidth() / 40; // 根据图片宽度计算字体大小，这里使用图片宽度的 1/10
        g2d.setColor(Color.WHITE); // 设置文字颜色为白色
        g2d.setFont(new Font("Arial", Font.PLAIN, fontSize)); // 设置字体样式和大小
        // 计算时间信息在图片中的位置
        int x = image.getWidth()- 2 * fontSize - 10;
        int y = fontSize;
        g2d.drawString(photoType, x, y); // 在指定位置绘制时间信息
        g2d.dispose(); // 释放资源
        return image;
    }

}
